#pragma once
#include <mutex>
#include <unordered_map>
#include "publicstruct.h"
using namespace std;

// 消息存储库 饿汉单例,线程安全
class MsgStorageDB
{
private:
    // 构造函数私有化,保证不在类的外部实例化
    MsgStorageDB();

public:
    ~MsgStorageDB();
    // 获取实例
    static MsgStorageDB *getInstance()
    {
        return globalInstance;
    }
    // 获取存储会话Map
    inline unordered_map<string, vector<st_msg>> &getStorageMap() { return storage_map; }

private:
    static MsgStorageDB *globalInstance;               // 全局唯一实例
    mutex m_mutex;                                     // 互斥量
    unordered_map<string, vector<st_msg>> storage_map; // 维护用户的历史聊天记录
};
